<!DOCTYPE html><html lang="zh" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>机器人开发板大创 | 百丽宫一只懒猫的小窝</title><meta name="keywords" content="在北理的二三事"><meta name="author" content="杜书丞"><meta name="copyright" content="杜书丞"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="ffffff"><meta property="og:type" content="article">
<meta property="og:title" content="机器人开发板大创">
<meta property="og:url" content="https://devil-sx.github.io/2022/11/%E5%85%B6%E5%AE%83/%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BC%80%E5%8F%91%E6%9D%BF%E5%A4%A7%E5%88%9B/index.html">
<meta property="og:site_name" content="百丽宫一只懒猫的小窝">
<meta property="og:locale">
<meta property="og:image" content="https://devil-sx.github.io/linear-gradient(20deg,#334d50,#cbcaa5)">
<meta property="article:published_time" content="2022-11-16T01:19:22.000Z">
<meta property="article:modified_time" content="2023-01-24T13:18:11.280Z">
<meta property="article:author" content="杜书丞">
<meta property="article:tag" content="在北理的二三事">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://devil-sx.github.io/linear-gradient(20deg,#334d50,#cbcaa5)"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://devil-sx.github.io/2022/11/%E5%85%B6%E5%AE%83/%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BC%80%E5%8F%91%E6%9D%BF%E5%A4%A7%E5%88%9B/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta name="baidu-site-verification" content="code-yPfTRU4FS9"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: undefined,
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
  copy: {
    success: 'Copy successfully',
    error: 'Copy error',
    noSupport: 'The browser does not support'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: 'Just',
    min: 'minutes ago',
    hour: 'hours ago',
    day: 'days ago',
    month: 'months ago'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: true,
  islazyload: false,
  isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: '机器人开发板大创',
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2023-01-24 21:18:11'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', 'ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><link rel="stylesheet" href="/css/ali_icon.css"></head><body><div id="web_bg"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">Articles</div><div class="length-num">17</div></a><a href="/tags/"><div class="headline">Tags</div><div class="length-num">11</div></a><a href="/categories/"><div class="headline">Categories</div><div class="length-num">7</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background: linear-gradient(20deg,#334d50,#cbcaa5)"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">百丽宫一只懒猫的小窝</a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">机器人开发板大创</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">Created</span><time class="post-meta-date-created" datetime="2022-11-16T01:19:22.000Z" title="Created 2022-11-16 09:19:22">2022-11-16</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2023-01-24T13:18:11.280Z" title="Updated 2023-01-24 21:18:11">2023-01-24</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/%E5%85%B6%E5%AE%83/">其它</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-wordcount"><i class="far fa-file-word fa-fw post-meta-icon"></i><span class="post-meta-label">Word count:</span><span class="word-count">1.5k</span><span class="post-meta-separator">|</span><i class="far fa-clock fa-fw post-meta-icon"></i><span class="post-meta-label">Reading time:</span><span>4min</span></span><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="机器人开发板大创"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">Post View:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>本篇项目灵感来自于<a target="_blank" rel="noopener" href="https://ysyx.oscc.cc/docs/">中科院计算所一生一芯项目</a></p>
<h1 id="这个大创好像有点不一样？"><a href="#这个大创好像有点不一样？" class="headerlink" title="这个大创好像有点不一样？"></a>这个大创好像有点不一样？</h1><p><img src="Board.png" alt="复用一下大创海报"><br>每年大创立项季，小坦克上总能看到许许多多同学求捞大创。许多学生带着一腔热血涌入大创项目，但由于各种不可抗力因素，往往最后早早开摆，到结项时才发现什么都没做，综测+1。这个大创是我的一个尝试，我由衷地希望大家在大创中能真正学到东西，培养自己的能力。因此这个大创不主要以项目为导向，而是<strong>以学习为导向</strong>。最后一年过去，大家能独立将成品做出来固然不错，但我更想看到大家在这一年中真正从实践中学习，吸收内化为自己成长的养分。</p>
<p><strong>Q：既然不以项目为导向，不担心无法结项等问题吗？</strong><br><strong>A：</strong> 该项目是队内大创，也就是我们已经有成熟的解决方案，想要结项绰绰有余。但这并不意味着你可以直接开摆。将这些告诉大家，是希望大家没有后顾之忧将重心放在学习知识而不是项目进度之上。我希望大家独立设计制作出成品，并进一步在往年的方案上做出改进。若直接开摆，我也没有办法。能否学到东西、能否完成项目全依托大家的自觉。</p>
<h1 id="如何科学地提问？"><a href="#如何科学地提问？" class="headerlink" title="如何科学地提问？"></a>如何科学地提问？</h1><p>我强烈地推荐大家阅读这两篇文章<a target="_blank" rel="noopener" href="https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways/blob/master/README.md">Stop-Ask-Questions-The-Stupid-Ways</a> ，<a target="_blank" rel="noopener" href="https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md">How-To-Ask-Questions-The-Smart-Way</a>，学习科学优雅的提问方法。</p>
<p>项目的大部分内容还是依靠大家自学，关于如何自学，无外乎三个好朋友<strong>STFW</strong>，<strong>RTFM</strong>和<strong>RTFSC</strong>（读了上面两篇文章就知道这个是什么）。</p>
<p>善用搜索引擎，既然这个出现了这个问题，你肯定不是第一个遇到的。网络上往往有许多解决方案。同时，我强烈推荐大家减少使用百度的频率，能读英文不读中文，特别是当项目深入的时候。Google&gt;Bing&gt;Baidu。</p>
<p><strong>Q：怎么提问还需要学习吗？</strong><br><strong>A：</strong> 是的。许多同学遇到无法解决的问题往往第一个想法直接抛给大佬，特别在学习C语言和计算机相关内容时，担任朋辈导师的经历也让我深深体会到了这点。学习到新东西，是依靠自己吸收理解，像弱智一样的提问只会害了自己（这不是为了攻击大家，我曾经也是这样走过来的）。学会正确科学的提问方式尤为重要。更多内容阅读<a target="_blank" rel="noopener" href="https://ysyx.oscc.cc/docs/prestudy/0.1.html">ysyx项目解释</a></p>
<p><strong>Q：中文社区有现有的资源，我为什么还要费劲去看英文？</strong><br><strong>A：</strong> 随着学习的深入，你会发现中文社区的资料越来越少。CSDN上许多内容都是别人调试的经验，很多往往不详细、有错误，而且单单会解决这个问题并不能让你成长，看官方的英文文档是学习到新知识最直接高效的方式。如果无法摆脱依赖百度，只能说你放弃了成长的机会。</p>
<p><strong>Q：既然靠自学，那我参加这个大创还有什么意义？我为什么不直接自己学习？</strong><br><strong>A：</strong> 说得没错，完全靠自己也是可以学会这些东西的。这个项目的意义在于给刚入门的新人学习路径一个大致的方向，避免走弯路；并且提供这个平台，定期check和push进度，激励大家。此外更希望大家掌握学习的方法，而不是知识本身。</p>
<h1 id="项目时间节点规划"><a href="#项目时间节点规划" class="headerlink" title="项目时间节点规划"></a>项目时间节点规划</h1><p>可以先看看<a target="_blank" rel="noopener" href="https://space.bilibili.com/20259914?spm_id_from=333.337.0.0">野生钢铁侠</a> 的视频，了解了解学会设计电路板在DIY中的意义。</p>
<p>大创时间一年，明年6月之前项目要基本成型，也就是说，到时候不单要有完整的设计解决方案，还要做出实际可用的成品。对于没有接触过嵌入式同学时间确实紧迫。不过大家也不用过度紧张，大家都有自己的时间安排，按着自己的节奏来就好。</p>
<p>目前的节点规划<br><div class="mermaid-wrap"><pre class="mermaid-src" hidden>
  gantt
    title Robot Control Board Project
    dateFormat  YYYY-MM-DD
    section 总体规划
    最小系统板原理 :i1, 2022-11-20, 40d
    最小系统板实物 :i2, 2023-2-30, 10d
    学习芯片手册，画板子 : i3, after i1, 50d
    学习程序，电控 :i5, 2023-3-1, 30d
    搭好外设，测试控制机器人: i6, 2023-4-1, 30d
    继续开发迭代: i7, 2023-4-1, 60d 
    section czy
    最小系统板 :a1, 2022-11-20, 30d
    section lzq
    最小系统板 :a2, 2022-11-21,30d 
    section zzx
    最小系统板 :a2, 2022-11-21,30d 
    section zzy
    最小系统板 :a2, 2022-11-21,30d 
  </pre></div></p>
<p>在学习时，需要大家<a target="_blank" rel="noopener" href="https://docs.qq.com/sheet/DRlVoUXpUbEZLdFZa?tab=BB08J2">在这</a>建立自己的<strong>学习记录</strong>。</p>
<h2 id="学习阶段-最小系统板（1个月）"><a href="#学习阶段-最小系统板（1个月）" class="headerlink" title="学习阶段-最小系统板（1个月）"></a>学习阶段-最小系统板（1个月）</h2><p>这个阶段，大家主要是自己学习最小系统板相关知识，能独立自主地用AD画出最小系统板的PCB版图。</p>
<p><strong>几个目标：</strong></p>
<ul>
<li>学会AD的使用</li>
<li>弄清最小系统板的原理</li>
<li>学会阅读芯片手册Datasheet</li>
<li>独立绘制出自己的最小系统板，有能力发嘉立创打板、焊接并成功点亮小灯。</li>
</ul>
<p><strong>注意：不要使用AD自动布线！不要使用自动布线！不要使用自动布线！</strong></p>
<p>最近要到考试周了，大家时间也很紧，还是以自己的其他安排优先。大创项目进度也一般主要是在寒假推动。不过线下学习交流还是更加方便一些，在寒假之前完成也可以带大家使用工训楼的设备焊接。量力而行吧！一个月之内能用AD绘制出最小系统板，朝着这个ddl去吧。</p>
<h3 id="扩展内容——Robomaster底控板的设计"><a href="#扩展内容——Robomaster底控板的设计" class="headerlink" title="扩展内容——Robomaster底控板的设计"></a>扩展内容——Robomaster底控板的设计</h3><p>（待完善）</p>
<h2 id="通信协议和电控"><a href="#通信协议和电控" class="headerlink" title="通信协议和电控"></a>通信协议和电控</h2><p>（待完善）</p>
</article><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/%E5%9C%A8%E5%8C%97%E7%90%86%E7%9A%84%E4%BA%8C%E4%B8%89%E4%BA%8B/">在北理的二三事</a></div><div class="post_share"><div class="social-share" data-image="/linear-gradient(20deg,#334d50,#cbcaa5)" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/js/social-share.min.js" defer></script></div></div><div class="post-reward"><div class="reward-button"><i class="fas fa-qrcode"></i> Donate</div><div class="reward-main"><ul class="reward-all"><li class="reward-item"><a href="/img/Wechat.jpg" target="_blank"><img class="post-qr-code-img" src="/img/Wechat.jpg" alt="wechat"/></a><div class="post-qr-code-desc">wechat</div></li></ul></div></div><div class="relatedPosts"><div class="headline"><i class="fas fa-thumbs-up fa-fw"></i><span>Related Articles</span></div><div class="relatedPosts-list"><div><a href="/2022/10/%E4%BF%A1%E5%8F%B7%E5%A4%84%E7%90%86/%E3%80%8A%E4%BF%A1%E5%8F%B7%E4%B8%8E%E7%B3%BB%E7%BB%9F%E3%80%8B%E5%8B%98%E8%AF%AF/" title="《信号与系统》勘误"><img class="cover" src="/linear-gradient(20deg,#334d50,#cbcaa5)" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-10-18</div><div class="title">《信号与系统》勘误</div></div></a></div><div><a href="/2022/11/%E5%B7%A5%E5%85%B7%E9%85%8D%E7%BD%AE/Verilator%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/" title="Verilator笔记"><img class="cover" src="/linear-gradient(20deg,#334d50,#cbcaa5)" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-11-23</div><div class="title">Verilator笔记</div></div></a></div><div><a href="/2022/12/%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86/%E3%80%8A%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86%E3%80%8B%E8%AF%B4%E6%98%8E%E5%92%8C%E5%8B%98%E8%AF%AF/" title="《通信原理》说明和勘误"><img class="cover" src="/linear-gradient(20deg,#334d50,#cbcaa5)" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-12-03</div><div class="title">《通信原理》说明和勘误</div></div></a></div></div></div><hr/><div id="post-comment"><div class="comment-head"><div class="comment-headline"><i class="fas fa-comments fa-fw"></i><span> Comment</span></div></div><div class="comment-wrap"><div><div id="lv-container" data-id="city" data-uid="MTAyMC81NzU3OS8zNDA0Mw=="></div></div></div></div></div><div class="aside-content" id="aside-content"><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>Catalog</span><span class="toc-percentage"></span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E8%BF%99%E4%B8%AA%E5%A4%A7%E5%88%9B%E5%A5%BD%E5%83%8F%E6%9C%89%E7%82%B9%E4%B8%8D%E4%B8%80%E6%A0%B7%EF%BC%9F"><span class="toc-number">1.</span> <span class="toc-text">这个大创好像有点不一样？</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%A6%82%E4%BD%95%E7%A7%91%E5%AD%A6%E5%9C%B0%E6%8F%90%E9%97%AE%EF%BC%9F"><span class="toc-number">2.</span> <span class="toc-text">如何科学地提问？</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E9%A1%B9%E7%9B%AE%E6%97%B6%E9%97%B4%E8%8A%82%E7%82%B9%E8%A7%84%E5%88%92"><span class="toc-number">3.</span> <span class="toc-text">项目时间节点规划</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%AD%A6%E4%B9%A0%E9%98%B6%E6%AE%B5-%E6%9C%80%E5%B0%8F%E7%B3%BB%E7%BB%9F%E6%9D%BF%EF%BC%881%E4%B8%AA%E6%9C%88%EF%BC%89"><span class="toc-number">3.1.</span> <span class="toc-text">学习阶段-最小系统板（1个月）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%89%A9%E5%B1%95%E5%86%85%E5%AE%B9%E2%80%94%E2%80%94Robomaster%E5%BA%95%E6%8E%A7%E6%9D%BF%E7%9A%84%E8%AE%BE%E8%AE%A1"><span class="toc-number">3.1.1.</span> <span class="toc-text">扩展内容——Robomaster底控板的设计</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE%E5%92%8C%E7%94%B5%E6%8E%A7"><span class="toc-number">3.2.</span> <span class="toc-text">通信协议和电控</span></a></li></ol></li></ol></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2022 - 2023 By 杜书丞</div><div class="framework-info"><span>Framework </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>Theme </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="Read Mode"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="Toggle Between Light And Dark Mode"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="Toggle between single-column and double-column"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="Setting"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="Table Of Contents"><i class="fas fa-list-ul"></i></button><a id="to_comment" href="#post-comment" title="Scroll To Comments"><i class="fas fa-comments"></i></a><button id="go-up" type="button" title="Back To Top"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><div class="js-pjax"><script>(() => {
  const $mermaidWrap = document.querySelectorAll('#article-container .mermaid-wrap')
  if ($mermaidWrap.length) {
    window.runMermaid = () => {
      window.loadMermaid = true
      const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default'

      Array.from($mermaidWrap).forEach((item, index) => {
        const mermaidSrc = item.firstElementChild
        const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
        const mermaidID = 'mermaid-' + index
        const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
        mermaid.mermaidAPI.render(mermaidID, mermaidDefinition, (svgCode) => {
          mermaidSrc.insertAdjacentHTML('afterend', svgCode)
        })
      })
    }

    const loadMermaid = () => {
      window.loadMermaid ? runMermaid() : getScript('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(runMermaid)
    }

    window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
  }
})()</script><script>function loadLivere () {
  if (typeof LivereTower === 'object') {
    window.LivereTower.init()
  }
  else {
    (function(d, s) {
        var j, e = d.getElementsByTagName(s)[0];
        if (typeof LivereTower === 'function') { return; }
        j = d.createElement(s);
        j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
        j.async = true;
        e.parentNode.insertBefore(j, e);
    })(document, 'script');
  }
}

if ('Livere' === 'Livere' || !false) {
  if (false) btf.loadComment(document.getElementById('lv-container'), loadLivere)
  else loadLivere()
}
else {
  function loadOtherComment () {
    loadLivere()
  }
}</script></div><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>